#ifndef RL_COMMON_H
#define RL_COMMON_H

typedef double* Observation;    //Defining what type a Observation is
typedef double Observation_type;

typedef int Action;	  //Defining what type a action is

#define ENV_INIT
#define AGENT_INIT
#define AGENT_CLEANUP
#define ENV_CLEANUP

#include <vector>


#ifdef RL_USE_SOCKETS
#include <RL_socket.h>
#endif


typedef char* Task_specification;
typedef double Reward;

typedef struct Reward_observation{
	Reward r;
	Observation o;
	bool terminal;
} Reward_observation;

typedef int State_key;
typedef int Random_seed_key;


#ifdef RL_USE_SOCKETS
extern RL_socket agent_connection;
#endif


#endif
